// pages/order/index.js
/* 1.页面被打开的时候 onshow
     0.onshow 不同于onload 无法在形参上接收options参数
     01.判断缓存中有没有token
        1.没有，直接跳转到授权页面
        2.有 ，继续往下执行
     1.获取url上的参数type
     2.根据type去发送请求获取订单数据
     3.渲染页面
    2.点击不同的标题  重新发送请求 来获取和渲染数据


*/
//引入 发送网络请求的方法
const http = require('../../utils/http.js');
import regeneratorRuntime from '../../lib/runtime/runtime'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    orders:[],
    tabs:[
      {
        id:0,
        value:'全部',
        isactive:true
      },
      {
        id:1,
        value:'代付款',
        isactive:false
      },
      {
        id:2,
        value:'待收货',
        isactive:false
      },     
      {
        id:3,
        value:'退货/换货',
        isactive:false
      }
    ]
  },
  //标题点击事件 
  handelTabsItemChange(e){
   
    //1.获取被点击的标题索引 e.detail
    const {index}=e.detail
    console.log('index=',index)
    //2.修改源数组中被点击的
    this.changeTapIndex(index) 
     //3.重新获取数据
     this.getOrderList(index+1) 
  },
 

  

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function (options) {
      // 01.判断缓存中有没有token
      //1.没有，直接跳转到授权页面
      const token=wx.getStorageSync("token")
      if(!token){
        wx.navigateTo({
          url: '/pages/auth/index',         
        });
        return false
      }
      console.log(options)
      //1.获取当前的小程序的页面栈-数组 长度最大是10个页面
      //2.数组中 索引最大的页面就是当前页面
      let pages= getCurrentPages()
      let currentPage=pages[pages.length-1]    
    
      //3.获取url上的type参数
      const {type}=currentPage.options
      //4.更改当前选中的tap
      this.changeTapIndex(type-1)
      //5.获取数据
      this.getOrderList(type)
      

  },
  changeTapIndex(index){//更改当前选中的tap
    let {tabs}=this.data
    tabs.forEach((v,i)=>i===index?v.isactive=true:v.isactive=false)
    this.setData({
      tabs
    }) 
  },
  async getOrderList(type){//获取订单列表的方法
    console.log('type=',type)
    const url = '/my/orders/all'
    const getPam={type:type}
    let { message: res } = await http.get(url,getPam)
    console.log(res)
    // ...v 先原样复制数据，再，添加新项key：(value)
    //Date.toLocalString
    //根据本地时间把 Date 对象转换为字符串：
    //var d=new Date();
    //var n=d.toLocaleString();
    let orders=res.orders.map(v=>({...v,create_time_cn:(new Date(v.create_time*1000).toLocaleString())}))
    this.setData({
      orders
    })
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})